package cn.wolfcode.rbac.query;

import lombok.Getter;

import java.util.Collections;
import java.util.List;

// 封装页面中需要的数据（分页结果对象）
@Getter
public class PageResult {
    private Integer currentPage;    // 当前页
    private Integer pageSize;       // 每页显示条数

    // sql 查询出来的数据
    private List<?> list;           // 结果集
    private Integer totalCount;     // 结果总数（总条数）

    // 计算出来的数据
    private Integer prevPage;       // 上一页
    private Integer nextPage;       // 下一页
    private Integer totalPage;      // 总页数

    // 当总条数为0时，使用
    public PageResult(Integer pageSize){
        // 调用下面的构造器
        // public static final List EMPTY_LIST = new EmptyList<>();
        this(1,0, Collections.EMPTY_LIST,pageSize);      // Collections.EMPTY_LIST 集合为空
    }

    public PageResult(Integer currentPage,Integer totalCount,List<?> list,Integer pageSize){
        this.currentPage = currentPage;
        this.pageSize = pageSize;
        this.list = list;
        this.totalCount = totalCount;

        // 计算
        this.totalPage = totalCount % pageSize == 0 ? totalCount / pageSize: totalCount / pageSize + 1;
        this.prevPage = currentPage > 1 ? currentPage - 1 : 1;
        this.nextPage = currentPage < totalPage ? currentPage + 1 : totalPage;
    }
}
